12 KEY TELEPHONEคีย์โทรศัพท์บนบอร์ดทดลองดิจิตอล ![]() วงจร ![]() ตำแหน่งบนขั้วต่อ ![]() ตามวงจร R0 R1 R2 R3 ทำเป็นสัญญาณเอาท์พุท C0 C1 และ C2 ทำเป็นสัญญาณอินพุท เมื่อต้องการตรวจจับการกดคีย์ ให้ส่งค่าลอจิก 0 มาที่ R ที่ละตัว ตัวอื่นให้เป็นหนึ่งหมด ถ้ากดสวิทช์ในแถว R ที่ให้เป็น 0 จะได้ 0 ออกที่ C ตรงคอลัมน์ที่สวิทช์นั้นอยู่เช่น ![]() เมื่อให้ R3-R0 = "1110" แล้วกดสวิทช์ 1 จะได้ C2-C0 = "110" เพราะ R0 (R0 = 0) จะต่อกับ C0 ผ่านคีย์ 1 แต่ถ้ากดสวิทช์ 2 จะได้ C2-C0 = "101" เพราะ R0 จะต่อกับ C1 ผ่านคีย์ 2 แต่ถ้ากดสวิทช์ 3 จะได้ C2-C0 = "011" เพราะ R0 จะต่อกับ C3 ผ่านคีย์ 3 แต่ถ้ากดสวิทช์อื่น จะได้ลอจิก 1 (C2-C0 = "111") ทั้งหมด เพราะการกดจะเป็นการต่อสาย C เข้ากับ R ที่เป็น ลอจิก 1 ดังนั้นถ้าต้องการตรวจการกดสวิทช์ของแถวอื่นต้องเปลี่ยค่าลอจิกที่ R3-R0 โดย ถ้าให้ R3 R2 R1 R0 = "1110" เป็นการตรวจการกดของสวิทช์ 1 2 และ 3 ถ้าให้ R3 R2 R1 R0 = "1101" เป็นการตรวจการกดของสวิทช์ 4 5 และ 6 ถ้าให้ R3 R2 R1 R0 = "1011" เป็นการตรวจการกดของสวิทช์ 7 8 และ 9 ถ้าให้ R3 R2 R1 R0 = "0111" เป็นการตรวจการกดของสวิทช์ * 0 และ # อัลกอริทึมสำหรับตรวจสอบการกดคีย์
รหัสที่ได้ รหัส R3R2R1R0C2C1C0 = "1110110" คือ สวิทช์ 1 รหัส R3R2R1R0C2C1C0 = "1110101" คือ สวิทช์ 2 รหัส R3R2R1R0C2C1C0 = "1110011" คือ สวิทช์ 3 รหัส R3R2R1R0C2C1C0 = "1101110" คือ สวิทช์ 4 รหัส R3R2R1R0C2C1C0 = "1101101" คือ สวิทช์ 5 รหัส R3R2R1R0C2C1C0 = "1101011" คือ สวิทช์ 6 รหัส R3R2R1R0C2C1C0 = "1011110" คือ สวิทช์ 7 รหัส R3R2R1R0C2C1C0 = "1011101" คือ สวิทช์ 8 รหัส R3R2R1R0C2C1C0 = "1011011" คือ สวิทช์ 9 รหัส R3R2R1R0C2C1C0 = "0111110" คือ สวิทช์ * รหัส R3R2R1R0C2C1C0 = "0111101" คือ สวิทช์ 0 รหัส R3R2R1R0C2C1C0 = "0111011" คือ สวิทช์ # รหัส R3R2R1R0C2C1C0 = "1110111" ไม่มีการกดสวิทช์ รหัส R3R2R1R0C2C1C0 = "1101111" ไม่มีการกดสวิทช์ รหัส R3R2R1R0C2C1C0 = "1011111" ไม่มีการกดสวิทช์ รหัส R3R2R1R0C2C1C0 = "0111111" ไม่มีการกดสวิทช์ |